/**
 * 循环左移p个位置
 * 
 * 简单方法：用长度为p的数组保存p个元素，其他的移动
 * 最后再把p个元素放进去
 * 时间复杂度为O(n) 空间复杂度为O(p)
 * 
 * 复杂的方法：
 * 吧这个长数组看作两个数组，一个长度为p一个是n-p
 * 设为数组a,b 先把a，b倒置得到!a !b
 * 
 * 再将!a!b一起反转 得到!(!a!b)即ba
 * 
 * 时间复杂度O(n)
 * 空间复杂度O(1)
 * 
 */

void reverse(int r[],int from,int to){
    int i,temp;
    for(i=0;i<(to-from)/2;i++){
        temp=r[from+i];
        r[from+i]=r[to-i];
        r[to-i]=temp;
    }
}
void converse(int r[],int n,int p){
    reverse(r,0,p-1);
    reverse(r,p,n-1);
    reverse(r,0,n-1);
}
